package com.hmkx.solr.query;


import org.apache.lucene.search.Query;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.search.QParser;
import org.apache.solr.search.SyntaxError;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * @Author hht
 * @Description 自定义用于生产query
 * @Date 14:17 2019/7/24
 * @Param 
 * @return 
 **/
public class HmkxParser extends QParser {
    final static Logger log= LoggerFactory.getLogger(HmkxParser.class);
    private Query innerQuery;

    @Override
    public Query parse() throws SyntaxError {
        return new HmkxQuery(innerQuery);
    }

    public HmkxParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
        super(qstr, localParams, params, req);
        try {
            //这里比较重要，把你实际使用的 原query 放在这里 我们原来使用的 具体使用什么参考 QParserPlugin 的standardPlugins
            QParser parser = getParser(qstr, "edismax", getReq());
            this.innerQuery = parser.parse();
        } catch (SyntaxError ex) {
            throw new RuntimeException("error parsing query", ex);
        }
    }
}
